package com.sqllog.admin.sql.datasource;


import com.sqllog.admin.sql.domain.DatasourceMemoryInfo;
import com.sqllog.admin.sql.domain.QueryParamInfo;
import com.sqllog.admin.sql.domain.ReturnDataInfo;
import com.sqllog.admin.sql.domain.SqlLogInfo;

import java.util.List;

/**
 * 日志存储数据源
 *
 * @author chennengcheng
 * @date 2022-01-04 15:52
 * @remark
 */
public interface LogSaveDataSourceOption {

    /**
     * 创建表
     * @param dataBaseName
     * @param tableName
     */
    void createTable(String dataBaseName, String tableName, String month);

    /**
     * 校验表是否存在
     * @param dataBaseName
     * @param tableName
     * @return
     */
    boolean checkExistsTableName(String dataBaseName, String tableName, String month);

    /**
     * 删除表
     * @param dataBaseName
     * @param tableName
     */
    void deleteTable(String dataBaseName, String tableName, String month);

    /**
     * 创建索引
     */
    void createTableIndex(String dataBaseName, String tableName, String month, String indexFiledName);

    /**
     * 新增
     * @param dataBaseName
     * @param tableName
     * @param month
     * @param sqlLogInfos
     * @return
     */
    int insert(String dataBaseName, String tableName, String month, List<SqlLogInfo> sqlLogInfos);

    /**
     * 查询
     * @param queryParamInfo
     * @return
     */
    List<ReturnDataInfo> list(QueryParamInfo queryParamInfo);

    /**
     * 查询
     * @param queryParamInfo
     * @return
     */
    long countRecordNum(QueryParamInfo queryParamInfo);

    /**
     * 查询
     * @param queryParamInfo
     * @return
     */
    ReturnDataInfo getById(QueryParamInfo queryParamInfo);

    /**
     * 获取内存使用
     * @return
     */
    DatasourceMemoryInfo getDatasourceMemoryUsed();
}
